home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 701-725 / 708 / intuisup / intuisup42.lha / Intuisup / source.lha / Pointer / pointer_test.c < prev    next >
C/C++ Source or Header  |  1992-04-22  |  6KB  |  201 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1992 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: pointer_test.c
  6.  *    Created ..: Thursday 09-Jan-92 00:26:55
  7.  *    Revision .: 0
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    09-Jan-92   Torsten Jürgeleit      Created this file!
  12.  *
  13.  ****************************************************************************
  14.  *
  15.  *    Test for mouse pointer functions
  16.  *
  17.  * $Revision Header ********************************************************/
  18.  
  19.     /* Includes */
  20.  
  21. #include <exec/types.h>
  22. #ifdef AZTEC_C
  23. #include <functions.h>   /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
  24. #endif
  25. #include <libraries/memwatch.h>   /* header file for memory debug link library (Fish 240) - AFTER functions.h */
  26. #include "/render/render.h"
  27. #include "/gadgets/gadgets.h"
  28. #include "pointer.h"
  29.  
  30.     /* Defines */
  31.  
  32. #define WINDOW_WIDTH        600
  33. #define WINDOW_HEIGHT        180
  34. #define WINDOW_IDCMP        (CLOSEWINDOW | GADGET_IDCMP_FLAGS_BUTTON)
  35. #define WINDOW_FLAGS        (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | RMBTRAP | ACTIVATE)
  36. #define WINDOW_TITLE        (UBYTE *)" Mouse pointer test "
  37.  
  38. #define RENDER_INFO_FLAGS    (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
  39. #define OPEN_WINDOW_FLAGS    (USHORT)(OPEN_WINDOW_FLAG_CENTER_WINDOW | OPEN_WINDOW_FLAG_RENDER_PENS)
  40.  
  41. #define CLOSE_GADGET_X    16
  42. #define CLOSE_GADGET_Y    5
  43.  
  44.     /* Globals */
  45.  
  46. struct IntuitionBase  *IntuitionBase;
  47. struct GfxBase        *GfxBase;
  48. struct Library        *DiskfontBase;
  49. struct Library        *LayersBase;
  50.  
  51.     /* Statics */
  52.  
  53. STATIC struct NewWindow  test_new_window = {
  54.    0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0, WINDOW_IDCMP, WINDOW_FLAGS,
  55.    NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
  56. };
  57. STATIC struct TextAttr  topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
  58.                            FS_NORMAL, FPF_ROMFONT },
  59.             topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
  60.                            FS_NORMAL, FPF_ROMFONT };
  61.     /* Defines for test gadgets */
  62.  
  63. #define TEST_GADGET_MOVE_POINTER    0
  64. #define TEST_GADGET_BUSY_POINTER    1
  65.  
  66. #define TEST_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  67. #define TEST_GADGET1_FLAGS        GADGET_DATA_FLAG_HOTKEY
  68. #define TEST_GADGET1_LEFT_EDGE        ((WINDOW_WIDTH / 2 - TEST_GADGET1_WIDTH) / 2)
  69. #define TEST_GADGET1_TOP_EDGE        ((WINDOW_HEIGHT - TEST_GADGET1_HEIGHT) / 2)
  70. #define TEST_GADGET1_WIDTH        ((12 + 2) * 10)
  71. #define TEST_GADGET1_HEIGHT        19
  72. #define TEST_GADGET1_TEXT        "_Move pointer"
  73. #define TEST_GADGET1_TEXT_ATTR        &topaz60_attr
  74.  
  75. #define TEST_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  76. #define TEST_GADGET2_FLAGS        (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_BUTTON_TOGGLE)
  77. #define TEST_GADGET2_LEFT_EDGE        (WINDOW_WIDTH - (TEST_GADGET2_WIDTH + TEST_GADGET1_LEFT_EDGE))
  78. #define TEST_GADGET2_TOP_EDGE        TEST_GADGET1_TOP_EDGE
  79. #define TEST_GADGET2_WIDTH        TEST_GADGET1_WIDTH
  80. #define TEST_GADGET2_HEIGHT        TEST_GADGET1_HEIGHT
  81. #define TEST_GADGET2_TEXT        "_Busy pointer"
  82. #define TEST_GADGET2_TEXT_ATTR        TEST_GADGET1_TEXT_ATTR
  83.  
  84. STATIC struct GadgetData  test_gadget_data[] = {
  85.    {
  86.     TEST_GADGET1_TYPE,        /* gd_Type */
  87.     TEST_GADGET1_FLAGS,        /* gd_Flags */
  88.     TEST_GADGET1_LEFT_EDGE,        /* gd_LeftEdge */
  89.     TEST_GADGET1_TOP_EDGE,        /* gd_TopEdge */
  90.     TEST_GADGET1_WIDTH,        /* gd_Width */
  91.     TEST_GADGET1_HEIGHT,        /* gd_Height */
  92.     TEST_GADGET1_TEXT,        /* *gd_Text */
  93.     TEST_GADGET1_TEXT_ATTR,        /* *gd_TextAttr */
  94.     { 0, 0, 0 }
  95.    }, {
  96.     TEST_GADGET2_TYPE,        /* gd_Type */
  97.     TEST_GADGET2_FLAGS,        /* gd_Flags */
  98.     TEST_GADGET2_LEFT_EDGE,        /* gd_LeftEdge */
  99.     TEST_GADGET2_TOP_EDGE,        /* gd_TopEdge */
  100.     TEST_GADGET2_WIDTH,        /* gd_Width */
  101.     TEST_GADGET2_HEIGHT,        /* gd_Height */
  102.     TEST_GADGET2_TEXT,        /* *gd_Text */
  103.     TEST_GADGET2_TEXT_ATTR,        /* *gd_TextAttr */
  104.     { 0, 0, 0 }
  105.    }, {
  106.     INTUISUP_DATA_END        /* mark end of gadget data array */
  107.    }
  108. };
  109.     /* Prototypes */
  110.  
  111. VOID test_action(struct RenderInfo  *ri, struct Window  *win,
  112.                             struct GadgetList  *gl);
  113.     /* Pragmas */
  114.  
  115. #pragma regcall(test_action(a0,a1,a2))
  116.  
  117.     /* Mouse pointer test */
  118.  
  119.    LONG
  120. main(VOID)
  121. {
  122.    struct RenderInfo  *ri;
  123.    struct Window      *win;
  124.    struct GadgetList  *gl;
  125.  
  126.    MWInit((BPTR)NULL, 0L);
  127.    if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
  128.       if (GfxBase = OpenLibrary("graphics.library", 0L)) {
  129.      if (DiskfontBase = OpenLibrary("diskfont.library", 0L)) {
  130.         if (LayersBase = OpenLibrary("layers.library", 0L)) {
  131.            if (ri = get_render_info(NULL, RENDER_INFO_FLAGS)) {
  132.           if (win = open_window(ri, &test_new_window,
  133.                                OPEN_WINDOW_FLAGS)) {
  134.              if (gl = create_gadgets(ri, &test_gadget_data[0], 0, 0,
  135.                                     NULL)) {
  136.             display_gadgets(win, gl);
  137.             test_action(ri, win, gl);
  138.             remove_gadgets(gl);
  139.             free_gadgets(gl);
  140.              }
  141.              close_window(win, FALSE);
  142.           }
  143.           free_render_info(ri);
  144.            }
  145.            CloseLibrary(LayersBase);
  146.         }
  147.         CloseLibrary(DiskfontBase);
  148.      }
  149.      CloseLibrary(GfxBase);
  150.       }
  151.       CloseLibrary(IntuitionBase);
  152.    }
  153.    MWTerm();
  154.    return(0L);
  155. }
  156.     /* Perform IDCMP action */
  157.  
  158.    VOID
  159. test_action(struct RenderInfo  *ri, struct Window  *win,
  160.                              struct GadgetList  *gl)
  161. {
  162.    struct MsgPort  *up = win->UserPort;
  163.    BOOL busy = FALSE, keepon = TRUE;
  164.  
  165.    do {
  166.       struct IntuiMessage  *msg;
  167.  
  168.       WaitPort(up);
  169.       while (msg = (struct IntuiMessage *)get_msg(up)) {
  170.      switch (msg->Class) {
  171.         case CLOSEWINDOW :
  172.            keepon = FALSE;
  173.            break;
  174.  
  175.         case ISUP_ID :
  176.            switch (msg->Code) {
  177.           case TEST_GADGET_MOVE_POINTER :
  178.              move_mouse_pointer(win, CLOSE_GADGET_X, CLOSE_GADGET_Y,
  179.                                      FALSE);
  180.              break;
  181.  
  182.           case TEST_GADGET_BUSY_POINTER :
  183.              if (busy == FALSE) {
  184.             change_mouse_pointer(win, NULL);
  185.             busy = TRUE;
  186.              } else {
  187.             restore_mouse_pointer(win);
  188.             busy = FALSE;
  189.              }
  190.              break;
  191.            }
  192.            break;
  193.      }
  194.      reply_msg(msg);
  195.       }
  196.    } while (keepon == TRUE);
  197.    if (busy == TRUE) {
  198.       restore_mouse_pointer(win);
  199.    }
  200. }
  201.